package com.yingside.gui;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

public class TestComboBoxFrame extends JFrame {

    private JComboBox<String> comboBox;

    public TestComboBoxFrame() {
        this.setTitle("下拉菜单窗口");
        this.setBounds(300, 300, 400, 400);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        comboBox = new JComboBox<>();
        comboBox.addItem("小刘");
        comboBox.addItem("小张");
        comboBox.addItem("小关");
        comboBox.addItem("小孙");

        this.add(comboBox);

        //addActionListener是所有组件都带有的事件，是一个比较通用的事件
        //就表示一个事情触发了
        /*comboBox.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
//                String actionCommand = e.getActionCommand();
//                System.out.println("actionCommand = " + actionCommand);

                //直接获取选中的对象
                String str = comboBox.getSelectedItem().toString();
                System.out.println("str = " + str);


            }
        });*/

        //addItemListener是下拉菜单特有的事件
        //注意，itemStateChanged这个方法在下拉菜单选择时候，会触发两次
        //原来选中的状态变为未选中，原来未选中的状态变为选中
        comboBox.addItemListener(new ItemListener() {
            public void itemStateChanged(ItemEvent e) {
                if(e.getStateChange() == ItemEvent.SELECTED){
//                    String item = e.getItem().toString();
//                    System.out.println("item = " + item);
                      //直接获取选中的对象 返回的是Object
//                    String str = comboBox.getSelectedItem().toString();
//                    System.out.println("str = " + str);

                    //先获取选择的下标，再获取选择的对象，返回的是泛型
                    String itemAt = comboBox.getItemAt(comboBox.getSelectedIndex());
                    System.out.println("itemAt = " + itemAt);


                }
            }
        });

        pack();

    }

    public static void main(String[] args) {
        TestComboBoxFrame comboBoxFrame = new TestComboBoxFrame();
        comboBoxFrame.setVisible(true);
    }
}
